﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BCMS.Business.DataContract;
using BCMS.Business.Implementation;
using BCMS.FrontEnd.DataContract;
namespace BCMS.Forms
{
    public partial class frmUserAdd : Form
    {
        public frmUserAdd()
        {
            this.Font = SystemFonts.MessageBoxFont;
            InitializeComponent();
        }
        public UserUI InsertedUser = null;
        private void btnOK_Click(object sender, EventArgs e)
        {
            DALclient client = new DALclient();
            try
            {
                UserUI user = getUserInfo();
                if (user != null)
                {
                    UserUI tmp = client.getUserByUserName(user.UserName);
                    if (tmp != null)
                    {
                        MessageBox.Show("Tên truy cập đã tồn tại trong cơ sở dữ liệu.");
                        txtUserName.Focus();
                    }
                    else
                    {
                        int userId = client.insertUser(user.UserName, user.Password, user.Roles, user.FullName, user.Email, user.Phone, user.Address, user.Position, user.Department);
                        if (userId > 0)
                        {
                            user.ID = userId;
                            InsertedUser = user;
                            this.DialogResult = DialogResult.OK;
                        }
                        else throw new Exception();

                    }
                }
            }
            catch
            {
                MessageBox.Show("Lỗi: Lỗi xảy ra trong quá trình kết nối đến cơ sở dữ liệu.");
            }
        }
        private UserUI getUserInfo()
        {
            if (txtUserName.Text.Trim().Length == 0)
            {
                MessageBox.Show("Tên đăng nhập không hợp lệ.");
                txtUserName.SelectAll();
                return null;
            }
            if (txtPassword.Text.Trim().Length == 0)
            {
                MessageBox.Show("Mật khẩu không hợp lệ.");
                txtPassword.SelectAll();
                return null;
            }

            char[] roles = new char[] { '0', '0', '0', '0' };
            if (chkClaim.Checked) roles[0] = '1';
            if (chkRelease.Checked) roles[1] = '1';
            if (chkReport.Checked) roles[2] = '1';
            if (chkAdmin.Checked) roles[3] = '1';

            UserUI item = new UserUI();
            item.UserName = txtUserName.Text.Trim();
            item.Password = txtPassword.Text;
            item.Roles = new string(roles);
            item.FullName = txtFullName.Text.Trim();
            item.Email = txtEmail.Text.Trim();
            item.Phone = txtPhone.Text.Trim();
            item.Address = txtAddress.Text.Trim();
            item.Position = txtPosition.Text.Trim();
            item.Department = txtDepartment.Text.Trim();

            return item;
        }

        private void groupBox2_Enter(object sender, EventArgs e)
        {

        }
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            const int WM_KEYDOWN = 0x100;
            if (msg.Msg == WM_KEYDOWN)
            {
                if (keyData == Keys.Escape)
                {
                    this.Close();
                    return true;
                }                
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }
    }
}
